package br.com.financas.controle;

import br.com.financas.beans.Categoria;
import br.com.financas.beans.Pessoa;
import br.com.financas.beans.TipoMovimentacao;
import br.com.financas.daos.CategoriaDao;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.AjaxBehaviorEvent;
import javax.faces.model.SelectItem;

/**
 *
 * @author Denis
 */
@ManagedBean
@ViewScoped
public class CategoriaMB {
    private Categoria categoria = new Categoria();
    private Categoria categoriaEdit = new Categoria();
    private TipoMovimentacao tipo = new TipoMovimentacao();
    private String idTipo;
    CategoriaDao categoriaDao = new CategoriaDao();
    List<Categoria>listCategorias;
    
    public CategoriaMB(){
    }
    Pessoa p = (Pessoa)  FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("user"); //capturando o id do usuario logado
    
    public void addCategoria(AjaxBehaviorEvent event) throws IOException{
        tipo.setIdTipoMovimentacao(Integer.parseInt(idTipo));
        categoriaDao.addCategoria(categoria,tipo,p);
        FacesContext.getCurrentInstance().getExternalContext().redirect("categoria.xhtml");
        categoria.setNome(null);
    }
    public void addCategoriaM(AjaxBehaviorEvent event) throws IOException{
        tipo.setIdTipoMovimentacao(Integer.parseInt(idTipo));
        categoriaDao.addCategoria(categoria,tipo,p);
        FacesContext.getCurrentInstance().getExternalContext().redirect("inicio.xhtml");
        categoria.setNome(null);
    }
    public void editarCategoria(Categoria categoria){
        this.categoriaEdit=categoria;
    }
    public void atualizarCategoria(AjaxBehaviorEvent event) throws IOException{
        tipo.setIdTipoMovimentacao(Integer.parseInt(idTipo));
        categoriaDao.updateCategoria(categoriaEdit,tipo);
        FacesContext.getCurrentInstance().getExternalContext().redirect("categoria.xhtml");
    }
    public void deletarCategoria(Categoria categoria){
        categoriaDao.deletarCategoria(categoria);
    }
    public List listarCategorias(){
        listCategorias = categoriaDao.listarCategoria(p); 
        return this.listCategorias;
    }
    public List<SelectItem> getlistaCategoria(){      
        listCategorias = categoriaDao.getListCategoria(p);
        List<SelectItem> itens = new ArrayList<>(listCategorias.size());
          
        for (Categoria c : listCategorias){
            itens.add(new SelectItem(c.getIdCategoria(),c.getNome()));
        }
        return itens;
    }
    public Categoria getCategoria() {
        return categoria;
    }

    public void setCategoria(Categoria categoria) {
        this.categoria = categoria;
    }

    public String getIdTipo() {
        return idTipo;
    }

    public void setIdTipo(String idTipo) {
        this.idTipo = idTipo;
    }

    public TipoMovimentacao getTipo() {
        return tipo;
    }

    public void setTipo(TipoMovimentacao tipo) {
        this.tipo = tipo;
    }

    public Categoria getCategoriaEdit() {
        return categoriaEdit;
    }

    public void setCategoriaEdit(Categoria categoriaEdit) {
        this.categoriaEdit = categoriaEdit;
    }
}